//一是污染了全局变量，二是每次调用 foo 的时候都需要进行一次判断。
var t
function foo() {
    if (t) return t
    t = new Date()
    return t
}
//闭包
var foo = (
    function () {
        var t
        return function () {
            if (t) return t
            t = new Date()
            return t
        }
    }
)
//函数对象
function foo() {
    if (foo.t) return foo.t
    foo.t = new Date()
    return foo.t
}
//惰性函数
var foo=function(){
    var t=new Date()
    foo=function(){
        return t
    }
    return foo()
}